//=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|
// DESCRICAO:
//   Testa as funcoes mais importantes da classe DataFileReader
//________________________________________________________
// MODO DE USAR:
//   dfr
//________________________________________________________
//A.Z. - 11/07 => Criacao
//=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|
#include <iomanip>
#include <iostream>
#include "meusTipos.hpp"
#include "dataFileReader.hpp"
using namespace std;


void read( DataFileReader & );


int main(void){
  string saux;
  MTcs file("testfile.dat");

  // Abre o arquivo de dados e le ele todo
  DataFileReader dfr(file);
  read(dfr);


  // "Rebobina"
  cout << "\nVoltando ao inicio e lendo tudo de novo ...\n" << endl;
  dfr.rewind();
  read(dfr);


  dfr.close();
  return 0;
}


void read( DataFileReader &dfr ){
  //while( !dfr.eof() ){
  //  ++dfr;
  while( !++dfr ){

    // Algumas informacoes da linha que esta sendo processada
    MTci nc = dfr.numberOfColumns();
    cout << "Linha " << setw(2) << dfr.lineNumber() << " nao esta vazia, e tem "
         << nc << " colunas:";

    // Pega os valores da linha
    // Pode pegar com reaColumn ou com <<
    // Descomente a parte que vc quer testar e comente a outra
    for( int c=1; c<=nc; c++ ){

      // Testa o operador <<
      //string saux;
      //dfr >> saux;
      //cout << "  " << saux;

      // Testa a funcao readColumn()
      cout << "  " << dfr.readColumn<string>(c);

    }
    cout << endl;
  }
}
